package com.link2room.soundwave.service;

import com.link2room.common.jpa.result.QueryResult;
import yuheng.pms.result.*;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * Created by sss on 2017/6/7.
 */

public interface IYhPmsMemberService {
    YhMemberInfoDto getYhPmsMemberInfo(String lhotelGroupCode, String pmsHotelGroupCode, String mobile) throws Exception;

    void bindYhPmsMemberInfo(String lhotelGroupCode,
                             String pmsHotelGroupCode,
                             String serialNo,
                             String cardNo,
                             String openId)throws Exception;

    List<YhCardNoDto> getCardsNoList(String lhotelGroupCode,
                                     String pmsHotelGroupCode)throws Exception;

    YhCardNoDto getCardNo(String lhotelGroupCode,
                          String pmsHotelGroupCode)throws Exception;

    List<YhCardTypeRuleDto> getCardTypeRule(String lhotelGroupCode,
                                            String pmsHotelGroupCode,
                                            String pmsHotelCode, String cardType)throws Exception;

    void upgradeCard(String lhotelGroupCode,
                     String pmsHotelGroupCode,
                     String pmsHotelCode, String cardNo,
                     String serialNo,
                     String fromCardType,
                     String toCardType,
                     Double amount,
                     Integer point, String pmsSalesmanNo)throws Exception;

    YhMemberInfoDto newYuHengPmsMember(String lhotelGroupCode,
                                       String pmsHotelGroupCode,
                                       String memberName,
                                       String mobile,
                                       String cardNo,
                                       String openId,
                                       String pmsSalesmanNo, String l2rMemberNo) throws Exception;

    List<YhCardPointDto> getYhPmsMemberPointsDetail(String lhotelGroupCode,
                                                    String pmsHotelGroupCode,
                                                    String serialNo,
                                                    String cardNo)throws Exception;

    void addYhPmsMemberPoints(String lhotelGroupCode,
                              String pmsHotelGroupCode,
                              String cardNo,
                              Integer points,
                              String remark) throws Exception;

    void useYhPmsMemberPoints(String lhotelGroupCode, String pmsHotelGroupCode, String cardNo, Integer points, String remark) throws Exception;

    QueryResult<YhCouponDto> getYhPmsMemberCoupons(String lhotelGroupCode, String pmsHotelGroupCode, String cardNo,
                                                   String pmsHotelCode, String pmsRmtype, Date arr, Date dep, BigDecimal minConsumeAmount,
                                                   Integer pageIndex,
                                                   Integer pageSize) throws Exception;

    QueryResult<YhActivityDto> listYhActivity(String lhotelGroupCode,
                                              String pmsHotelGroupCode,
                                              Integer pageIndex,
                                              Integer pageSize)throws Exception;

    YhActivityDto getYhActivity(String lhotelGroupCode, String id)throws Exception;

    String exchangePackage(String lhotelGroupCode,
                           String pmsHotelGroupCode,
                           String cardNo,
                           String activityCode,
                           String exchangeType,
                           String activityDate,
                           String mobile,
                           Double amount,
                           Integer points) throws Exception;
    
    String coupenCodeCollarCoupen(String lhotelGroupCode,
            String pmsHotelGroupCode,
            String cardNo,
            String CouponsCode,
            String CouponsCodeType,
            String mobile) throws Exception;
}
